#include "Bosque.h"

#include <glm\gtc\random.hpp>
#include <glm\gtc\matrix_transform.hpp>


Bosque::Bosque(unsigned int cantArboles): m_cantArboles(cantArboles) {
	for (unsigned int i = 0; i < m_cantArboles; ++i){
		// Creamos arboles distintos para que sean random
		Arbol *a=new Arbol();
		this->m_varboles.push_back(a);

		// Coloca los arboles en posiciones aleatorias en un area de radio "10"
		glm::vec3 vRan = glm::vec3( glm::diskRand(10.0f), 0.0f);
		this->m_posRandom.push_back( vRan );
	}
}


void Bosque::init(const glm::vec3 &DireccionLuz) {
	for (unsigned int i = 0; i < m_cantArboles; ++i){
		this->m_varboles[i]->init(DireccionLuz);
	}

	//this->m_arbol.init(DireccionLuz);
}


void Bosque::renderizar(const glm::mat4 &matVista, const glm::mat4 &matProyeccion, const glm::mat4 &matModelo) const {

	/*
	for (auto it = this->m_posRandom.cbegin(); it != this->m_posRandom.cend(); ++it){
		glm::mat4 posRand = glm::translate( matModelo, (*it) );
		this->m_arbol.renderizar(matVista, matProyeccion, posRand);
	}*/

	for (unsigned int i = 0; i < m_cantArboles; ++i){
		glm::mat4 posRand = glm::translate( matModelo, m_posRandom[i] );
		this->m_varboles[i]->renderizar(matVista, matProyeccion, posRand);
	}
}


